var calc = function (num) {
  let isOdd = num % 2 !== 0;
  if(num < 9 && isOdd) {
    return [1, num];
  }
  let re = getMin(num);
  // 质数
  if(!re) {
    return [1, num];
  }
  return re;
  function getMin(num) {
    let result = [];
    let isOdd = num % 2 !== 0;
    if(num < 9 && isOdd) {
      return [num];
    }
    let value = 0;
    let half = parseInt(num / 2);
    for (var i = half; i >= 2; i--) {
      value = num % i;
      if (value === 0) {
        let sub = getMin(i);
        if(sub.length === 0) {
          result.push([i, num / i]);
        } else {
          result.push(sub.concat(num / i));
        }
        break;
      }
    }
    return result[0] || [];
  }
}

console.log(calc(30))
